﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;


/// <summary>
/// Descripción breve de Empresa
/// </summary>
public class SolicitudPractica
{
    private int idSolicitudPractica;
    private string Empresa_nit;
    private int estado;
    private string fechaCreacion;
    private string observaciones;
    private string descripcionProyecto;

    private string nombreContacto;
    private string cargoContacto;
    private string telefonoContacto;
    private string celularContacto;
    private string emailContacto;
    private string faxContacto;

    public DataTable BusquedaAvanzada(string nomEmpresa, string nitEmpresa, string fechaCreacion, string estadoSolicitud)
    {
        List<string> criterios = new List<string>();

        if (nitEmpresa != "ninguno" && nitEmpresa != string.Empty)
            criterios.Add("nit = '" + nitEmpresa + "'");

        if (nomEmpresa != string.Empty)
            criterios.Add("nombre like '%" + nomEmpresa + "%'");

        if (fechaCreacion != string.Empty)
            criterios.Add("fechaCreacion like '%" + fechaCreacion + "%'");

        if (estadoSolicitud != "ninguno" && estadoSolicitud != string.Empty)
            criterios.Add("estado = '" + estadoSolicitud + "'");

        string filtro = string.Join(" AND ", criterios.ToArray());

        SolicitudPractica solicitudes = new SolicitudPractica();

        DataTable todos = solicitudes.ObtenerSolicitudesDataTable();
        DataRow[] dtrow = todos.Select(filtro);
        DataTable resultado = new DataTable();
        resultado = todos.Clone();
        foreach (DataRow dtr in dtrow)
            resultado.ImportRow(dtr);
        return resultado;
    }

    public bool ExisteIdSolicitud() 
    {
        BD bd = new BD();
        bd.AbrirConexion();
        string consulta = "select idSolicitudPractica from SolicitudPractica WHERE idSolicitudPractica=" + idSolicitudPractica;
        DataTable dt = bd.Consultar(consulta);
        bd.CerrarConexion();
        if (dt.Rows.Count != 0)
            return true;
        return false;
    }

    public SolicitudPractica(int idSolicitudPractica, string Empresa_nit, int estado, string fechaCreacion,
                             string observaciones,string descripcionProyecto, string nombreContacto,
                             string cargoContacto,string telefonoContacto, string celularContacto, string emailContacto,
                             string faxContacto)
    {
        this.idSolicitudPractica = idSolicitudPractica;
        this.Empresa_nit = Empresa_nit;
        this.estado = estado;
        this.fechaCreacion = fechaCreacion;
        this.observaciones = observaciones;
        this.descripcionProyecto = descripcionProyecto;
        this.nombreContacto = nombreContacto;
        this.cargoContacto = cargoContacto;
        this.telefonoContacto = telefonoContacto;
        this.telefonoContacto = telefonoContacto;
        this.celularContacto = celularContacto;
        this.emailContacto = emailContacto;
        this.faxContacto = faxContacto;
    }

    public SolicitudPractica()
    {

    }

    //(int idSolicitud, string Empresa_nit, int estado, string observaciones,
    // string descripcionProyecto, string nombreContacto, string cargoContacto,
    // string telefonoContacto, string celularContacto, string emailContacto)

    public int ObtIdSolicitudPractica() { return idSolicitudPractica; }
    public string ObtEmpresaNit() { return Empresa_nit; }
    public int ObtEstado() { return estado; }
    public string ObtFechaCreacion() { return fechaCreacion; }
    public string ObtObservaciones() { return observaciones; }
    public string ObtDescripcionProyecto() { return descripcionProyecto; }
    public string ObtNombreContacto() { return nombreContacto; }
    public string ObtCargoContacto() { return cargoContacto; }
    public string ObtTelefonoContacto() { return telefonoContacto; }
    public string ObtCelularContacto() { return celularContacto; }
    public string ObtEmailContacto() { return emailContacto; }
    public string ObtFaxContacto() { return faxContacto; }

    public void AsigIdSolicitudPractica(int idSolicitudPractica) { this.idSolicitudPractica = idSolicitudPractica; }
    public void AsigEmpresa_nit(string Empresa_nit) { this.Empresa_nit = Empresa_nit; }
    public void AsigEstado(int estado) { this.estado = estado; }
    public void AsigFechaCreacion(string fechaCreacion) { this.fechaCreacion = fechaCreacion; }
    public void AsigObservaciones(string observaciones) { this.observaciones = observaciones; }
    public void AsigDescripcionProyecto(string descripcionProyecto) { this.descripcionProyecto = descripcionProyecto; }
    public void AsigNombreContacto(string nombreContacto) { this.nombreContacto = nombreContacto; }
    public void AsigCargoContacto(string cargoContacto) { this.cargoContacto = cargoContacto; }
    public void AsigTelefonoContacto(string telefonoContacto) { this.telefonoContacto = telefonoContacto; }
    public void AsigCelularContacto(string celularContacto) { this.celularContacto = celularContacto; }
    public void AsigEmailContacto(string emailContacto) { this.emailContacto = emailContacto; }
    public void AsigFaxContacto(string faxContacto) { this.faxContacto = faxContacto; }

    public string ActualizarSolicitud() 
    {
        BD bd = new BD();
        bd.AbrirConexion();
        string campos =string.Format("estado={0},observaciones='{1}',nombreContacto='{2}',cargoContacto='{3}',telefonoContacto='{4}',celularContacto='{5}',emailContacto='{6}',faxContacto='{7}',descripcionProyecto='{8}'",
            estado,observaciones,nombreContacto,cargoContacto,telefonoContacto,celularContacto,emailContacto,faxContacto,descripcionProyecto); 
        string condicion="idSolicitudPractica="+idSolicitudPractica;
        string actualizar = bd.Actualizar("SolicitudPractica", campos, condicion);
        bd.CerrarConexion();
        return actualizar;
    }

    public SolicitudPractica ObtSolicitudPorId(int idSolicitud) 
    {
        BD bd = new BD();
        SolicitudPractica solEncontrada = new SolicitudPractica();
        bd.AbrirConexion();
        string consulta = "select * from SolicitudPractica WHERE idSolicitudPractica=" + idSolicitud;
        DataTable dt = bd.Consultar(consulta);
        if (dt.Rows.Count!=0) 
        {
            DataRow fila=dt.Rows[0];

            solEncontrada.AsigIdSolicitudPractica(Convert.ToInt32(fila["idSolicitudPractica"].ToString()));
            solEncontrada.AsigEstado(Convert.ToInt32(fila["estado"].ToString()));
            solEncontrada.AsigFechaCreacion(fila["fechaCreacion"].ToString());
            solEncontrada.AsigDescripcionProyecto(fila["descripcionProyecto"].ToString());
            solEncontrada.AsigEmpresa_nit(fila["Empresa_nit"].ToString());
            solEncontrada.AsigObservaciones(fila["observaciones"].ToString());

            solEncontrada.AsigCargoContacto(fila["cargoContacto"].ToString());
            solEncontrada.AsigCelularContacto(fila["celularContacto"].ToString());
            solEncontrada.AsigEmailContacto(fila["emailContacto"].ToString());
            solEncontrada.AsigNombreContacto(fila["nombreContacto"].ToString());
            solEncontrada.AsigTelefonoContacto(fila["telefonoContacto"].ToString());
            solEncontrada.AsigFaxContacto(fila["faxContacto"].ToString());
        }
        bd.CerrarConexion();


        return solEncontrada;
    }

    public string GuardarSolicitud()
    {
        BD bd = new BD();
        bd.AbrirConexion();
        fechaCreacion = DateTime.Now.ToString();
        //Falta implementar la fechaCreacion (DateTime).
        string insert = bd.Insertar("SolicitudPractica", "(Empresa_nit,estado,fechaCreacion,observaciones,descripcionProyecto,nombreContacto,cargoContacto,telefonoContacto,celularContacto,emailContacto,faxContacto)"
                                  , "('" + Empresa_nit + "','" + estado + "','" + fechaCreacion + "','" + observaciones + "','" + descripcionProyecto + "','" + nombreContacto + "','" + cargoContacto + "','" + telefonoContacto + "','" + celularContacto + "','" + emailContacto + "','" + faxContacto + "')");
        bd.CerrarConexion();
        return insert;
    }

    public DataTable ObtenerSolicitudesDataTable()
    {
        BD bd = new BD();
        bd.AbrirConexion();
        DataTable dt = bd.Consultar("SELECT * FROM SolicitudPractica INNER JOIN Empresa ON Empresa_nit = nit");
        bd.CerrarConexion();

        return dt;

    }

    public List<SolicitudPractica> ObtenerSolicitudes()
    {
        BD bd = new BD();
        bd.AbrirConexion();
        List<SolicitudPractica> listsol = new List<SolicitudPractica>();
        DataTable dt = bd.Consultar("SELECT * FROM SolicitudPractica INNER JOIN Empresa ON Empresa_nit = nit");
        int cont = 0;

        foreach (DataRow dr in dt.Rows)
        {
            //(int idSolicitudPractica, string Empresa_nit,
            // int estado, DateTime fechaCreacion,string observaciones,string descripcionProyecto,
            // string nombreContacto,string cargoContacto,string telefonoContacto, string celularContacto,
            // string emailContacto)
            SolicitudPractica solicitud = new SolicitudPractica(Convert.ToInt32(dt.Rows[cont]["idSolicitudPractica"].ToString()), dt.Rows[cont]["Empresa_nit"].ToString(),
                Convert.ToInt32(dt.Rows[cont]["estado"].ToString()), dt.Rows[cont]["fechaCreacion"].ToString(), dt.Rows[cont]["observaciones"].ToString(), dt.Rows[cont]["descripcionProyecto"].ToString(),
                dt.Rows[cont]["nombreContacto"].ToString(), dt.Rows[cont]["cargoContacto"].ToString(), dt.Rows[cont]["telefonoContacto"].ToString(), dt.Rows[cont]["celularContacto"].ToString(),
                dt.Rows[cont]["emailContacto"].ToString(), dt.Rows[cont]["faxContacto"].ToString());
            cont++;
            listsol.Add(solicitud);
        }
        bd.CerrarConexion();

        return listsol;

    }
}
